次æJavaScriptã€ãã¬ãŒã¿ãã«ããŒææ¡ããã¹ããªãŒã ãã¥ãŒãžã§ã³ã§ããŒã¿åŠçãã©ã驿°ããã解説ãäžéé åãæé€ããé å»¶è©äŸ¡ã«ãã£ãŠå€§å¹ ãªããã©ãŒãã³ã¹åäžãå®çŸããŸãã
JavaScriptã®ããã©ãŒãã³ã¹ã«ãããæ¬¡ãªãé£èºïŒã€ãã¬ãŒã¿ãã«ããŒã®ã¹ããªãŒã ãã¥ãŒãžã§ã³ã培åºè§£èª¬
ãœãããŠã§ã¢éçºã®äžçã§ã¯ãããã©ãŒãã³ã¹ã®è¿œæ±ã¯çµ¶ãéãªãæ
ã§ããJavaScriptéçºè
ã«ãšã£ãŠã.map()ã.filter()ã.reduce()ã®ãããªé
åã¡ãœãããé£éãããããšã¯ãããŒã¿æäœã®ããã®äžè¬çã§ãšã¬ã¬ã³ããªãã¿ãŒã³ã§ãããã®æµãããããªAPIã¯èªã¿ããã衚çŸåè±ãã§ãããé倧ãªããã©ãŒãã³ã¹ã®ããã«ããã¯ãé ããŠããŸããããã¯äžéé
åã®çæã§ãããã§ãŒã³ã®åã¹ãããã§æ°ããé
åãäœæãããã¡ã¢ãªãšCPUãµã€ã¯ã«ãæ¶è²»ããŸããå€§èŠæš¡ãªããŒã¿ã»ããã®å Žåãããã¯ããã©ãŒãã³ã¹ã®å€§æšäºã«ãªããããŸããã
ããã§ç»å Žããã®ããECMAScriptæšæºãžã®ç»æçãªè¿œå ã§ãããJavaScriptã§ã®ããŒã¿ã³ã¬ã¯ã·ã§ã³ã®åŠçæ¹æ³ãåå®çŸ©ããããšããŠããTC39ã€ãã¬ãŒã¿ãã«ããŒææ¡ã§ãããã®äžå¿ã«ããã®ã¯ãã¹ããªãŒã ãã¥ãŒãžã§ã³ïŒãŸãã¯æäœãã¥ãŒãžã§ã³ïŒãšããŠç¥ããã匷åãªæé©åæè¡ã§ãããã®èšäºã§ã¯ããã®æ°ãããã©ãã€ã ã«ã€ããŠããããã©ã®ããã«æ©èœãããªãéèŠãªã®ãããããŠéçºè ãããå¹ççã§ã¡ã¢ãªã«åªããã匷åãªã³ãŒããæžãããšãã©ã®ããã«å¯èœã«ããã®ããå æ¬çã«æ¢ããŸãã
åŸæ¥ã®ãã§ã€ã³ã®åé¡ç¹ïŒäžéé åã®ç©èª
ã€ãã¬ãŒã¿ãã«ããŒã®é©æ°æ§ãååã«çè§£ããããã«ã¯ããŸãçŸåšã®é åããŒã¹ã®ã¢ãããŒãã®éçãçè§£ããå¿ èŠããããŸããæ°åã®ãªã¹ããããæåã®5ã€ã®å¶æ°ãèŠã€ãããããã2åã«ããŠçµæãåéãããšãããã·ã³ãã«ã§æ¥åžžçãªã¿ã¹ã¯ãèããŠã¿ãŸãããã
åŸæ¥ã®ã¢ãããŒã
æšæºã®é åã¡ãœããã䜿çšãããšãã³ãŒãã¯ã¯ãªãŒã³ã§çŽæçã§ãïŒ
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ...]; // éåžžã«å€§ããªé
åãæ³åããŠãã ãã
const result = numbers
.filter(n => n % 2 === 0) // ã¹ããã1: å¶æ°ããã£ã«ã¿ãªã³ã°
.map(n => n * 2) // ã¹ããã2: 2åã«ãã
.slice(0, 5); // ã¹ããã3: æåã®5ã€ãååŸ
ãã®ã³ãŒãã¯å®å
šã«èªã¿ãããã§ãããJavaScriptãšã³ãžã³ãå
éšã§äœãããŠããããç¹ã«numbersãæ°çŸäžã®èŠçŽ ãå«ãã§ããå Žåã«äœãèµ·ããããèŠãŠã¿ãŸãããã
- ã€ãã¬ãŒã·ã§ã³1 (
.filter()): ãšã³ãžã³ã¯numbersé åå šäœãå埩åŠçããŸããã¡ã¢ãªå ã«æ°ããäžéé åãäœæãããããevenNumbersãšåŒã³ãŸããããããã«ã¯ãã¹ãã«åæ Œãããã¹ãŠã®æ°å€ãæ ŒçŽãããŸããnumbersã«100äžã®èŠçŽ ãããå Žåãããã¯çŽ50äžèŠçŽ ã®é åã«ãªãå¯èœæ§ããããŸãã - ã€ãã¬ãŒã·ã§ã³2 (
.map()): 次ã«ããšã³ãžã³ã¯evenNumbersé åå šäœãå埩åŠçããŸãããããã³ã°æäœã®çµæãæ ŒçŽããããã«ã2çªç®ã®äžéé åãäœæãããããdoubledNumbersãšåŒã³ãŸããããããããŸã50äžèŠçŽ ã®é åã§ãã - ã€ãã¬ãŒã·ã§ã³3 (
.slice()): æåŸã«ããšã³ãžã³ã¯doubledNumbersããæåã®5ã€ã®èŠçŽ ãåã£ãŠã3çªç®ã®æçµçãªé åãäœæããŸãã
é ããã³ã¹ã
ãã®ããã»ã¹ã¯ãããã€ãã®é倧ãªããã©ãŒãã³ã¹åé¡ãæããã«ããŸãïŒ
- é«ãã¡ã¢ãªå²ãåœãŠ: ããã«ç Žæ£ããã2ã€ã®å€§ããªäžæé åãäœæããŸãããéåžžã«å€§èŠæš¡ãªããŒã¿ã»ããã®å Žåãããã¯é倧ãªã¡ã¢ãªãã¬ãã·ã£ãŒã«ã€ãªãããã¢ããªã±ãŒã·ã§ã³ã®é床äœäžãã¯ã©ãã·ã¥ãåŒãèµ·ããå¯èœæ§ããããŸãã
- ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®ãªãŒããŒããã: äœæããäžæãªããžã§ã¯ããå€ããã°å€ãã»ã©ãã¬ããŒãžã³ã¬ã¯ã¿ã¯ããããã¯ãªãŒã³ã¢ããããããã«ããå€ãã®äœæ¥ãå¿ èŠãšããäžæåæ¢ãããã©ãŒãã³ã¹ã®äœäžãåŒãèµ·ãããŸãã
- ç¡é§ãªèšç®: äœçŸäžãã®èŠçŽ ãè€æ°åå埩åŠçããŸãããããã«æªãããšã«ãæçµçãªç®æšã¯5ã€ã®çµæãåŸãããšã ãã§ããããããã
.filter()ãš.map()ã¡ãœããã¯ããŒã¿ã»ããå šäœãåŠçãã.slice()ãäœæ¥ã®ã»ãšãã©ãç Žæ£ããåã«äœçŸäžãã®äžèŠãªèšç®ãå®è¡ããŸããã
ããããããã€ãã¬ãŒã¿ãã«ããŒãšã¹ããªãŒã ãã¥ãŒãžã§ã³ã解決ããããã«èšèšãããæ ¹æ¬çãªåé¡ã§ãã
ã€ãã¬ãŒã¿ãã«ããŒã®ç޹ä»ïŒããŒã¿åŠçã®æ°ãããã©ãã€ã
ã€ãã¬ãŒã¿ãã«ããŒææ¡ã¯ã䜿ãæ
£ããäžé£ã®ã¡ãœãããIterator.prototypeã«çŽæ¥è¿œå ããŸããããã¯ãã€ãã¬ãŒã¿ã§ããä»»æã®ãªããžã§ã¯ãïŒãžã§ãã¬ãŒã¿ãArray.prototype.values()ã®ãããªã¡ãœããã®çµæãå«ãïŒãããããã®åŒ·åãªæ°ããããŒã«ã«ã¢ã¯ã»ã¹ã§ããããšãæå³ããŸãã
äž»èŠãªã¡ãœããã«ã¯æ¬¡ã®ãããªãã®ããããŸãïŒ
.map(mapperFn).filter(filterFn).take(limit).drop(limit).flatMap(mapperFn).reduce(reducerFn, initialValue).toArray().forEach(fn).some(fn).every(fn).find(fn)
åã®äŸããããã®æ°ãããã«ããŒã䜿ã£ãŠæžãçŽããŠã¿ãŸãããïŒ
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ...];
const result = numbers.values() // 1. é
åããã€ãã¬ãŒã¿ãååŸ
.filter(n => n % 2 === 0) // 2. filterã€ãã¬ãŒã¿ãäœæ
.map(n => n * 2) // 3. mapã€ãã¬ãŒã¿ãäœæ
.take(5) // 4. takeã€ãã¬ãŒã¿ãäœæ
.toArray(); // 5. ãã§ãŒã³ãå®è¡ããçµæãåé
äžèŠãããšãã³ãŒãã¯éåžžã«äŒŒãŠããŸããéèŠãªéãã¯ãé
åèªäœã§ã¯ãªãã€ãã¬ãŒã¿ãè¿ãéå§ç¹ânumbers.values()âãšãæçµçµæãçæããããã«ã€ãã¬ãŒã¿ãæ¶è²»ããçµç«¯æäœâ.toArray()âã§ããããããæ¬åœã®éæ³ã¯ããã2ã€ã®ç¹ã®éã«èµ·ããããšã«ãããŸãã
ãã®ãã§ãŒã³ã¯ãäžéé
åãäžåäœæããŸããã代ããã«ãåã®ã€ãã¬ãŒã¿ãã©ãããããããè€éãªæ°ããã€ãã¬ãŒã¿ãæ§ç¯ããŸããèšç®ã¯é
å»¶ãããŸãã.toArray()ã.reduce()ã®ãããªçµç«¯ã¡ãœãããå€ãæ¶è²»ããããã«åŒã³åºããããŸã§ãå®éã«ã¯äœãèµ·ãããŸããããã®ååã¯é
å»¶è©äŸ¡ãšåŒã°ããŸãã
ã¹ããªãŒã ãã¥ãŒãžã§ã³ã®éæ³ïŒäžåºŠã«äžã€ã®èŠçŽ ãåŠçãã
ã¹ããªãŒã ãã¥ãŒãžã§ã³ã¯ãé å»¶è©äŸ¡ãéåžžã«å¹ççã«ããã¡ã«ããºã ã§ããã³ã¬ã¯ã·ã§ã³å šäœãå¥ã ã®ã¹ããŒãžã§åŠçãã代ããã«ãåèŠçŽ ãæäœã®ãã§ãŒã³å šäœãéããŠåå¥ã«åŠçããŸãã
çµã¿ç«ãŠã©ã€ã³ã®äŸã
補é å·¥å Žãæ³åããŠã¿ãŠãã ãããåŸæ¥ã®é åã¡ãœããã¯ãåã¹ããŒãžããšã«å¥ã ã®éšå±ããããããªãã®ã§ãïŒ
- éšå±1ïŒãã£ã«ã¿ãªã³ã°ïŒ: ãã¹ãŠã®åææïŒé åå šäœïŒãéã³èŸŒãŸããŸããäœæ¥å¡ãäžè¯åãåãé€ããŸããè¯åã¯ãã¹ãŠå€§ããªç®±ïŒæåã®äžéé åïŒã«å ¥ããããŸãã
- éšå±2ïŒãããã³ã°ïŒ: è¯åã®å ¥ã£ãç®±å šäœã次ã®éšå±ã«ç§»åãããŸããããã§ãäœæ¥å¡ãåã¢ã€ãã ã倿ŽããŸãã倿Žãããã¢ã€ãã ã¯å¥ã®å€§ããªç®±ïŒ2çªç®ã®äžéé åïŒã«å ¥ããããŸãã
- éšå±3ïŒååŸïŒ: 2çªç®ã®ç®±ãæåŸã®éšå±ã«ç§»åãããäœæ¥å¡ãåã«äžããæåã®5ã€ã®ã¢ã€ãã ãåããæ®ããç Žæ£ããŸãã
ãã®ããã»ã¹ã¯ã茞éïŒã¡ã¢ãªå²ãåœãŠïŒãšåŽåïŒèšç®ïŒã®ç¹ã§ç¡é§ãå€ãã§ãã
ã€ãã¬ãŒã¿ãã«ããŒã«ããã¹ããªãŒã ãã¥ãŒãžã§ã³ã¯ãçŸä»£ã®çµã¿ç«ãŠã©ã€ã³ã®ãããªãã®ã§ãïŒ
- 1æ¬ã®ã³ã³ãã¢ãã«ãããã¹ãŠã®ã¹ããŒã·ã§ã³ãééããŸãã
- ã¢ã€ãã ããã«ãã«çœ®ãããŸããããã¯ãã£ã«ã¿ãªã³ã°ã¹ããŒã·ã§ã³ã«ç§»åããŸãã倱æããã°åãé€ãããŸããåæ Œããã°ç¶è¡ããŸãã
- ããã¯çŽã¡ã«ãããã³ã°ã¹ããŒã·ã§ã³ã«ç§»åããããã§å€æŽãããŸãã
- 次ã«ãã«ãŠã³ãã£ã³ã°ã¹ããŒã·ã§ã³ïŒtakeïŒã«ç§»åããŸããç£ç£è ããããæ°ããŸãã
- ç£ç£è ã5ã€ã®æåããã¢ã€ãã ãæ°ãããŸã§ããããäžåºŠã«1ã¢ã€ãã ãã€ç¶ããŸãããã®æç¹ã§ãç£ç£è ã¯ã忢ïŒããšå«ã³ãçµã¿ç«ãŠã©ã€ã³å šäœã忢ããŸãã
ãã®ã¢ãã«ã§ã¯ãäžé補åã®å€§ããªç®±ã¯ãªããäœæ¥ãå®äºããç¬éã«ã©ã€ã³ã¯åæ¢ããŸããããããããã€ãã¬ãŒã¿ãã«ããŒã®ã¹ããªãŒã ãã¥ãŒãžã§ã³ãæ©èœããä»çµã¿ã§ãã
ã¹ããããã€ã¹ãããã®å èš³
ã€ãã¬ãŒã¿ã®äŸã®å®è¡ã远跡ããŠã¿ãŸãããïŒ numbers.values().filter(...).map(...).take(5).toArray()ã
.toArray()ãåŒã³åºãããŸããå€ãå¿ èŠã§ãããœãŒã¹ã§ããtake(5)ã€ãã¬ãŒã¿ã«æåã®ã¢ã€ãã ãèŠæ±ããŸããtake(5)ã€ãã¬ãŒã¿ã¯æ°ããããã®ã¢ã€ãã ãå¿ èŠã§ãããœãŒã¹ã§ããmapã€ãã¬ãŒã¿ã«ã¢ã€ãã ãèŠæ±ããŸããmapã€ãã¬ãŒã¿ã¯å€æããããã®ã¢ã€ãã ãå¿ èŠã§ãããœãŒã¹ã§ããfilterã€ãã¬ãŒã¿ã«ã¢ã€ãã ãèŠæ±ããŸããfilterã€ãã¬ãŒã¿ã¯ãã¹ãããããã®ã¢ã€ãã ãå¿ èŠã§ãããœãŒã¹é åã€ãã¬ãŒã¿ããæåã®å€ãååŸããŸãïŒ1ã- '1'ã®æ
: filterã¯
1 % 2 === 0ããã§ãã¯ããŸããããã¯falseã§ããfilterã€ãã¬ãŒã¿ã¯1ãç Žæ£ãããœãŒã¹ããæ¬¡ã®å€ãååŸããŸãïŒ2ã - '2'ã®æ
:
- filterã¯
2 % 2 === 0ããã§ãã¯ããŸããããã¯trueã§ãã2ãmapã€ãã¬ãŒã¿ã«æž¡ããŸãã mapã€ãã¬ãŒã¿ã¯2ãåãåãã2 * 2ãèšç®ããçµæã®4ãtakeã€ãã¬ãŒã¿ã«æž¡ããŸããtakeã€ãã¬ãŒã¿ã¯4ãåãåããŸããå éšã«ãŠã³ã¿ãïŒ5ãã4ã«ïŒãã¯ãªã¡ã³ããã4ã.toArray()ã³ã³ã·ã¥ãŒãã«yieldããŸããæåã®çµæãèŠã€ãããŸããã
- filterã¯
toArray()ã«ã¯1ã€ã®å€ããããŸããæ¬¡ã®å€ãtake(5)ã«èŠæ±ããŸããããã»ã¹å šäœãç¹°ãè¿ãããŸãã- filterã¯
3ïŒå€±æïŒã次ã«4ïŒåæ ŒïŒãååŸããŸãã4ã¯8ã«ãããããããããååŸãããŸãã take(5)ã5ã€ã®å€ãyieldãããŸã§ãããç¶ããŸãã5çªç®ã®å€ã¯å ã®æ°å€10ããæ¥ãŠã20ã«ããããããŸããtake(5)ã€ãã¬ãŒã¿ã5çªç®ã®å€ãyieldãããšããã«ããã®ä»äºã¯å®äºããããšãç¥ããŸããæ¬¡ã«å€ãèŠæ±ããããšãããããçµäºããããšã瀺ããŸãããã§ãŒã³å šäœã忢ããŸãããœãŒã¹é åå ã®11ã12ãããã³ãã®ä»æ°çŸäžã®æ°å€ã¯äžåºŠãèŠãããŸããã
ãã®å©ç¹ã¯èšãç¥ããŸããïŒäžéé åã¯ãªããã¡ã¢ãªäœ¿çšéã¯æå°éã«æããããèšç®ã¯å¯èœãªéãæ©ã忢ããŸããããã¯å¹çã«ãããèšå¿µç¢çãªå€åã§ãã
å®çšçãªå¿çšãšããã©ãŒãã³ã¹ã®åäž
ã€ãã¬ãŒã¿ãã«ããŒã®åã¯ãåçŽãªé åæäœãã¯ããã«è¶ ããŠåºãããŸããè€éãªããŒã¿åŠçã¿ã¹ã¯ãå¹ççã«åŠçããããã®æ°ããå¯èœæ§ãéããŸãã
ã·ããªãª1ïŒå€§èŠæš¡ããŒã¿ã»ãããšã¹ããªãŒã ã®åŠç
æ°ã®ã¬ãã€ãã®ãã°ãã¡ã€ã«ããããã¯ãŒã¯ãœã±ããããã®ããŒã¿ã¹ããªãŒã ãåŠçããå¿ èŠããããšæ³åããŠãã ããããã¡ã€ã«å šäœãã¡ã¢ãªå ã®é åã«èªã¿èŸŒãããšã¯ãå€ãã®å Žåäžå¯èœã§ãã
ã€ãã¬ãŒã¿ïŒãããŠåŸã§è§Šããéåæã€ãã¬ãŒã¿ïŒã䜿ãã°ãããŒã¿ããã£ã³ã¯ããšã«åŠçã§ããŸãã
// 倧ããªãã¡ã€ã«ããè¡ãyieldãããžã§ãã¬ãŒã¿ã®æŠå¿µçãªäŸ
function* readLines(filePath) {
// ãã¡ã€ã«å
šäœãèªã¿èŸŒãŸãã«è¡åäœã§èªã¿åãå®è£
// yield line;
}
const errorCount = readLines('huge_app.log').values()
.map(line => JSON.parse(line))
.filter(logEntry => logEntry.level === 'error')
.take(100) // æåã®100åã®ãšã©ãŒãèŠã€ãã
.reduce((count) => count + 1, 0);
ãã®äŸã§ã¯ããã¡ã€ã«ã®1è¡ã ãããã€ãã©ã€ã³ãééããéã«äžåºŠã«ã¡ã¢ãªã«ååšããŸããããã°ã©ã ã¯æå°éã®ã¡ã¢ãªãããããªã³ãã§ãã©ãã€ãåäœã®ããŒã¿ãåŠçã§ããŸãã
ã·ããªãª2ïŒæ©æçµäºãšç絡è©äŸ¡
ããã¯.take()ã§æ¢ã«èŠãŸãããã.find()ã.some()ã.every()ã®ãããªã¡ãœããã«ãé©çšãããŸããå€§èŠæš¡ãªããŒã¿ããŒã¹ã§ç®¡çè
ã§ããæåã®ãŠãŒã¶ãŒãèŠã€ããããšãèããŠã¿ãŸãããã
é åããŒã¹ïŒéå¹çïŒ:
const firstAdmin = users.filter(u => u.isAdmin)[0];
ããã§ã¯ãæåã®ãŠãŒã¶ãŒã管çè
ã§ãã£ãŠãã.filter()ã¯usersé
åå
šäœãå埩åŠçããŸãã
ã€ãã¬ãŒã¿ããŒã¹ïŒå¹ççïŒ:
const firstAdmin = users.values().find(u => u.isAdmin);
.find()ãã«ããŒã¯åãŠãŒã¶ãŒãäžäººãã€ãã¹ãããæåã®äžèŽãèŠã€ãããšããã«ããã»ã¹å
šäœã忢ããŸãã
ã·ããªãª3ïŒç¡éã·ãŒã±ã³ã¹ã®æäœ
é å»¶è©äŸ¡ã«ãããæœåšçã«ç¡éã®ããŒã¿ãœãŒã¹ãæ±ãããšãå¯èœã«ãªããŸããããã¯é åã§ã¯äžå¯èœã§ãããžã§ãã¬ãŒã¿ã¯ããã®ãããªã·ãŒã±ã³ã¹ãäœæããã®ã«æé©ã§ãã
function* fibonacci() {
let a = 0, b = 1;
while (true) {
yield a;
[a, b] = [b, a + b];
}
}
// 1000ãã倧ããæåã®10åã®ãã£ããããæ°ãèŠã€ãã
const result = fibonacci()
.filter(n => n > 1000)
.take(10)
.toArray();
// result㯠[1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393] ã«ãªããŸã
ãã®ã³ãŒãã¯å®ç§ã«åäœããŸããfibonacci()ãžã§ãã¬ãŒã¿ã¯æ°žé ã«å®è¡ã§ããŸãããæäœãé
å»¶è©äŸ¡ã§ããã.take(10)ã忢æ¡ä»¶ãæäŸãããããããã°ã©ã ã¯ãªã¯ãšã¹ããæºããã®ã«å¿
èŠãªã ãã®ãã£ããããæ°ãèšç®ããŸãã
ããåºããšã³ã·ã¹ãã ãžã®èŠç¹ïŒéåæã€ãã¬ãŒã¿
ãã®ææ¡ã®çŽ æŽãããç¹ã¯ãåæã€ãã¬ãŒã¿ã ãã«é©çšãããããã§ã¯ãªãããšã§ããããã¯ãŸããAsyncIterator.prototypeäžã§éåæã€ãã¬ãŒã¿ã®ããã®äžé£ã®äžŠè¡ãã«ããŒãå®çŸ©ããŸããããã¯ãéåæããŒã¿ã¹ããªãŒã ãã©ãã«ã§ãããçŸä»£ã®JavaScriptã«ãšã£ãŠãç¶æ³ãäžå€ããããã®ã§ãã
ããŒãžåå²ãããAPIã®åŠçãNode.jsããã®ãã¡ã€ã«ã¹ããªãŒã ã®èªã¿åãããŸãã¯WebSocketããã®ããŒã¿ã®åŠçãæ³åããŠã¿ãŠãã ããããããã¯ãã¹ãŠèªç¶ã«éåæã¹ããªãŒã ãšããŠè¡šçŸãããŸããéåæã€ãã¬ãŒã¿ãã«ããŒã䜿ãã°ãåã宣èšçãª.map()ã.filter()æ§æããããã«äœ¿çšã§ããŸãã
// ããŒãžåå²ãããAPIãåŠçããæŠå¿µçãªäŸ
async function* fetchAllUsers() {
let url = '/api/users?page=1';
while (url) {
const response = await fetch(url);
const data = await response.json();
for (const user of data.users) {
yield user;
}
url = data.nextPageUrl;
}
}
// ç¹å®ã®åœã®ã¢ã¯ãã£ããªãŠãŒã¶ãŒãæåã®5人èŠã€ãã
const activeUsers = await fetchAllUsers()
.filter(user => user.isActive)
.filter(user => user.country === 'DE')
.take(5)
.toArray();
ããã¯ãJavaScriptã«ãããããŒã¿åŠçã®ããã°ã©ãã³ã°ã¢ãã«ãçµ±äžããŸããããŒã¿ãåçŽãªã€ã³ã¡ã¢ãªé åã«ããããšããªã¢ãŒããµãŒããŒããã®éåæã¹ããªãŒã ã«ããããšãåã匷åã§å¹ççã§èªã¿ããããã¿ãŒã³ã䜿çšã§ããŸãã
ã¯ããæ¹ãšçŸåšã®ã¹ããŒã¿ã¹
2024幎åé çŸåšãã€ãã¬ãŒã¿ãã«ããŒææ¡ã¯TC39ããã»ã¹ã®ã¹ããŒãž3ã«ãããŸããããã¯ãèšèšãå®äºããå§å¡äŒãå°æ¥ã®ECMAScriptæšæºã«å«ãŸããããšãæåŸ ããŠããããšãæå³ããŸããçŸåšã¯ãäž»èŠãªJavaScriptãšã³ãžã³ã§ã®å®è£ ãšããããã®å®è£ ããã®ãã£ãŒãããã¯ãåŸ ã£ãŠããæ®µéã§ãã
仿¥ã€ãã¬ãŒã¿ãã«ããŒã䜿çšããæ¹æ³
- ãã©ãŠã¶ãšNode.jsã©ã³ã¿ã€ã : äž»èŠãªãã©ãŠã¶ïŒChrome/V8ãªã©ïŒãNode.jsã®ææ°ããŒãžã§ã³ã§ã¯ããããã®æ©èœã®å®è£ ãå§ãŸã£ãŠããŸãããã€ãã£ãã«ã¢ã¯ã»ã¹ããã«ã¯ãç¹å®ã®ãã©ã°ãæå¹ã«ããããéåžžã«æè¿ã®ããŒãžã§ã³ã䜿çšããå¿ èŠããããããããŸãããåžžã«ææ°ã®äºææ§ããŒãã«ïŒäŸãã°ãMDNãcaniuse.comïŒã確èªããŠãã ããã
- ããªãã£ã«: å€ãã©ã³ã¿ã€ã ããµããŒãããå¿
èŠãããæ¬çªç°å¢ã§ã¯ãããªãã£ã«ã䜿çšã§ããŸããæãäžè¬çãªæ¹æ³ã¯ãBabelã®ãããªãã©ã³ã¹ãã€ã©ã«ãã£ãŠãã°ãã°å«ãŸãã
core-jsã©ã€ãã©ãªã䜿çšããããšã§ããBabelãšcore-jsãèšå®ããããšã§ãã€ãã¬ãŒã¿ãã«ããŒã䜿çšããã³ãŒããæžãããããå€ãç°å¢ã§åäœããåçã®ã³ãŒãã«å€æãããããšãã§ããŸãã
çµè«ïŒJavaScriptã«ãããå¹ççãªããŒã¿åŠçã®æªæ¥
ã€ãã¬ãŒã¿ãã«ããŒææ¡ã¯ãåãªãæ°ããã¡ãœããã®ã»ãã以äžã®ãã®ã§ãããJavaScriptã«ãããããå¹ççã§ãã¹ã±ãŒã©ãã«ã§ã衚çŸåè±ããªããŒã¿åŠçãžã®æ ¹æ¬çãªã·ããã衚ããŠããŸããé å»¶è©äŸ¡ãšã¹ããªãŒã ãã¥ãŒãžã§ã³ãæ¡çšããããšã§ãå€§èŠæš¡ããŒã¿ã»ããã§ã®é åã¡ãœããã®é£éã«äŒŽãé·å¹Žã®ããã©ãŒãã³ã¹åé¡ã解決ããŸãã
ãã¹ãŠã®éçºè ã«ãšã£ãŠã®éèŠãªãã€ã³ãã¯æ¬¡ã®ãšããã§ãïŒ
- ããã©ã«ãã§ã®ããã©ãŒãã³ã¹: ã€ãã¬ãŒã¿ã¡ãœãããé£éãããããšã§äžéã³ã¬ã¯ã·ã§ã³ãåé¿ããã¡ã¢ãªäœ¿çšéãšã¬ããŒãžã³ã¬ã¯ã¿ã®è² è·ãå€§å¹ ã«åæžããŸãã
- é å»¶æ§ã«ããå¶åŸ¡ã®åŒ·å: èšç®ã¯å¿ èŠãªãšãã«ã®ã¿å®è¡ãããæ©æçµäºãç¡éããŒã¿ãœãŒã¹ã®ãšã¬ã¬ã³ããªåŠçãå¯èœã«ããŸãã
- çµ±äžãããã¢ãã«: åã匷åãªãã¿ãŒã³ãåæããŒã¿ãšéåæããŒã¿ã®äž¡æ¹ã«é©çšãããã³ãŒããç°¡çŽ åããè€éãªããŒã¿ãããŒã«ã€ããŠæšè«ããããããŸãã
ãã®æ©èœãJavaScriptèšèªã®æšæºçãªäžéšã«ãªãã«ã€ããŠãããã¯æ°ããã¬ãã«ã®ããã©ãŒãã³ã¹ãè§£ãæŸã¡ãéçºè ãããå ç¢ã§ã¹ã±ãŒã©ãã«ãªã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããã®ãåã¥ããã§ããããã¹ããªãŒã ã§èãå§ãããã£ãªã¢ã§æãå¹ççãªããŒã¿åŠçã³ãŒããæžãæºåãããæãæ¥ãŸããã